home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / xarchie-2.0.9 / backup / hostname.c < prev    next >
C/C++ Source or Header  |  1995-06-18  |  1KB  |  49 lines

  1. /*
  2.  * hostname.c : Amamzing how hard it is to get this information...
  3.  *
  4.  * George Ferguson, ferguson@cs.rochester.edu, 23 Apr 1993.
  5.  *
  6.  * Many possibilities here. The current attempt is:
  7.  * (a) Use HOSTNAME if set, since SO many people have strange systems
  8.  * (b) else call gethostname(), complain if it fails
  9.  * (c) if it succeeded, call gethostbyname() to "canonicalize"
  10.  *     the name (many systems don't return a fully-qualified name,
  11.  *     and getdomainname() is a loss.
  12.  */
  13. #include <stdio.h>
  14. #include <netdb.h>
  15. #ifndef MAXHOSTNAMELEN
  16. #include <sys/param.h>
  17. #endif
  18. #include "sysdefs.h"
  19. #include "stringdefs.h"
  20.  
  21. char *
  22. GetHostname()
  23. {
  24.     static char hostname[MAXHOSTNAMELEN];
  25.     struct hostent *host;
  26.  
  27.     if (getenv("HOSTNAME") != NULL)
  28.     strcpy(hostname,getenv("HOSTNAME"));
  29.     else if (gethostname(hostname,sizeof(hostname)) != 0) {
  30.     fprintf(stderr,"gethostname failed -- you should set $HOSTNAME");
  31.     strcpy(hostname,"unknown.host");
  32.     } else if ((host=gethostbyname(hostname)) == NULL) {
  33.     fprintf(stderr,"gethostbyname failed -- you should set $HOSTNAME");
  34.     strcpy(hostname,"unknown.host");
  35.     } else {
  36.     strcpy(hostname,host->h_name);
  37.     }
  38.     return(hostname);
  39. }
  40.  
  41. #ifdef STANDALONE
  42. main()
  43. {
  44.     printf("%s\n",GetHostname());
  45.     exit(0);
  46. }
  47. #endif /* STANDALONE */
  48.  
  49.